EDA dla zbioru z problemem klasyfikacji płci w zależności od własności akustycznych głosu

Wszystkie nasze zmienne objaśniające są numeryczne, w dodatku w żadnej z nich nie mamy braków danych, co niewątpliwie ułatwi nam pracę. Cech jest aż 20. Dane pochodzą z analizy częstotliwości dźwięku generowanego przez głosy kobiet i mężczyzn. Zbiór obfituje w 3168 obserwacji.

Pierwszym ważnym spostrzeżeniem jest to, że dla każdej zmiennej mamy dokładnie wszystkie wartości różne, co oznacza brak zmiennych dyskretnych, przypuszczamy, że każda z nich będzie miała pewien rozkład ciągły. Większość tych zmiennych jest statystykami wygenerowanymi na podstawie nagrań głosów poszczególnych osób, stąd musimy uważać na (niekoniecznie unikać) tworzenie statystyk z innych statystyk, takich jak średnia ze średnich. Może to prowadzić do nieścisłości, gdyż nie mamy dostępu do początkowych próbek. Zmienne mają w większości dość małe zakresy, mieszczą się między 0 a 1. Jedynie zmienna kurt przyjmuje istotnie większe wartości, spróbujemy znaleźć tutaj jakieś przekształcenie tej zmiennej. Duże wartości maksymalne mają również zmienne skew, maxdom i dfrange, tutaj możemy mieć do czynienia z obserwacjami odstającymi, stąd zwrócimy uwagę na te zmienne. Reszta zmiennych na pierwszy rzut oka nie zdradza nic podejrzanego, wartości kwartyli oraz zakresy wydają się w porządku.

IQR=Q75-Q25, zatem powinniśmy pozbyć się tej zmiennej, bo da się ją wyliczyć z pozostałych.

Spróbujmy przekształcić tą zmienną przy użyciu funkcji log(x).

Przekształcenie to zadziałało całkiem nieźle, mamy już dużo mniejsze wartości. Dalej jednak mamy rozkład z bardzo dużym ogonem prawostronnym. Zobaczymy jak zadziała kolejne przekształcenie log(x).

Tak przekształcona zmienna kurt ma wartości bardzo podobne do innych zmiennych, a jej histogram przypomina bardzo gęstość rozkładu normalnego. Jedyną rzeczą, która to psuje jest dużo wartości większych od około 1.75. Moga to być wartości odstające, co zaraz sprawdzimy przy użyciu reguły trzech sigm.

Mamy 71 obserwacji odstających, co wydaje się być ewentualną sporą utratą danych, jednak w porównaniu do całego zbioru jest to jedynie niecałe 2.5% obserwacji.

Do tej pory udało nam się zidentyfikować zmienne, które potencjalnie przekazywały tą samą informację. W celu dalszej analizy występowania współliniowości posłużymy się narzędziem z analizy regresji, a mianowicie współczynnikiem podbicia wariancji (VIF).
W skrócie każdą ze zmiennych z naszej ramki eksperymentu będziemy w kolejnych krokach traktować jako zmienną objaśnianą i z pomocą metody najmniejszych kwadratów dokonywać rzutu tego wektora na podprzestrzeń stworzoną z pozostałych zmiennych w ramce danych. Dzięki statystyce $R^2$, mówiącej jaka część zmienności zmiennej objaśnianej w danej iteracji może być wytłumaczona zmiennością reszty zmiennych będziemy mogli skonstruować VIF.
Wartości powyżej 10 będą intuicyjnie świadczyły o występowaniu stochastycznej współliniowości. Wartości powyżej 100 będą świadczyły, że pozostałe zmienne w zbiorze w 99% tłumaczą zmienność danej cechy. Wartośc równa inf będzie świadczyła o tym, że zmienna jest kombinacją liniową pozostałych zmiennych.
Prosty wzór przedstawia się następująco : $$VIF_i = \frac{1}{1-R_i^2}$$.

Zmienne mindom, maxdom, dfrange są liniowo zależne z pewnym zestawem pozostałych zmiennych w zbiorze. Zmienne takie jak centroid, meanfreq wykazują pewną dozę współliniowości z pozostałymi zmiennymi, potencjalnie może, ale nie musi rodzić to potem problemy przy modelowaniu.

Jak widzimy bardzo duża liczba zmiennych jest ze sobą skorelowana. Będziemy się więc musieli poważnie zastanowić nad usunięciem kilku z nich.

Przyjrzyjmy się dokładniej zmiennej maxdom.

Widzimy, że ma ona osobliwy histogram, wygląda na rozkład dwumodalny, prawostronnie skośny. Spróbujmy po raz kolejny zastosować na tej zmiennej przekształcenie logarytmiczne.

Po przekształceniu dalej mamy rozkład dwumodalny, ale pozbyliśmy się prawostronnej skośności. Możemy jeszcze zobaczyć przy pomocy boxplotu jak rozkłada się ta zmienna.

Nie mamy zatem podejrzeń o obserwacjach odstających. Możemy zastanowić się nad binaryzacją tej zmiennej na 0 dla wartości mniejszych od 1 i 1 dla wartości większych od 1. Zobaczmy jakie byłyby teoretyczne proporcje obu klas.

Proporcje obserwacji w obu klasach wynosiłyby zatem 1:3, więc byłyby całkiem akceptowalne.

Na potrzeby przyszłych analiz zapewne przydałoby się utworzyć pomocniczą zmienną indykatorową, która 1 przypisywałaby obserwacji będącej kobietą, a 0 mężczyzną.

Powróćmy do współczynnika podbicia wariancji. Jak wyglada liniowa zależność w nowopowstałym zbiorze zmiennych?

Usunęliśmy zmienne, kóre były deterministycznie kombinacją liniową pozostałych zmiennych. Spoglądając na zestawienie 12 cech nadal występuje współliniowość, na przykład patrząc na median , Q75 , maxfun , sp.ent. Najprawdopodobniej, niektóre z nich niosą tę samą informację co pewne pozostałe zmienne ze zbioru lub ich kombinacje. Jeżeli nie chcemy się już pozbywać żadnej zmiennej powinniśmy pamiętać o tym fakcie analizując macierz kowariancji, może stosować pewne zabiegi regularyzujące przy regresji i ich odpowiedniki dla innych algorytmów.

Porównajmy teraz histogramy oraz wykresy zależności wszystkich zmiennych w grupach.

Wnioski jakie możemy wyciągnąć z wykresów:

Histogramy warunkowane z przynależnością do płci pokazują ciekawą własność rozkładu zmiennej mode. Męskie głosy zdają się samotnie koncetrować wokół wartości 0.09. Możemy popatrzeć na przekształcenia tej zmiennej lub próby jej skategoryzowania.

Zmienna indykatorowa która jako warunek bierze obserwacje podzielone ze względu na zmienną mode w zależności do zawierania się wartości w przedziale od 0.08 do 0.15, a poza nim zdaje się mieć dużą moc deskryminacyjną w porównaniu do zwykłej monotonicznej zależności mode i płci mierzonej korelacją kendalla.

Data preprocessing and feature engineering

Usunęliśmy już wcześniej kilka zmiennych, które według nas nie wnosiłyby nic do modelu, dla przypomnienia powtórzymy poprzednie usunięcia i transformacje oraz sprawdzimy czy możemy jakoś stransformować pozostałe zmienne.

Zmienne dotychczas usunięte:

Dotychczasowe transformacje:

Będziemy chcieli znaleźć jeszcze przekształcenia dla zmiennych meandom oraz modindx.

Okazuje się, że dobrym przekształceniem dla zmiennej meandom jest pierwiastek, wtedy rozkład ten staje się niemal symetryczny i przypomina nawet w pewnym sensie krzywą Gaussa. Martwi nas jedynie duży słupek w okolicach zera. Sprawdzimy czy nie jest to jedna wartość co wskazywałoby na to, że dane zostały w pewien sposób ucięte do tej wartości (np. była to minimalna czułość przyrządów pomiarowych).

Dzieje się tak jak podejrzewaliśmy, jedna wartość powtarza się zbyt liczną ilość razy, uznamy ją zatem za wartość odstającą, gdyż może się okazać, że faktyczne wartości były dużo mniejsze niż wpisane. Dodatkowo widzimy, że odstaje ona bardzo dużo od rozkładu. Sprawdźmy tylko czy obserwacje te nie różnicują nam dobrze obu klas.

Taką różnicę w obu klasach jesteśmy jeszcze w stanie zaakceptować.

Przejdźmy teraz do zmiennej modindx. Okazuje się, że dobrym przekształceniem dla niej będzie log(x+1). Znowu jednak mamy wystający słupek histogramu przy zerze, musimy sprawdzić czy nie stało się tak jak w poprzednim przypadku, że jest tak tylko jedna wartość.

Widzimy, że w tym przypadku najprowdobodobniej wartość zerowa ma zbyt dużą liczność, co może świadczyć o pewnym przycięciu pierwotnych obserwacji do 0, a co za tym idzie wpłynie to na poprawność naszego modelu. Obserwacje te będziemy, więc traktować jako odstające. Sprawdźmy jak poprzednio czy nie oddzielają nam one dobrze klas.

Nie jest to rażąca przewaga jednej z klas, więc możemy zaakceptować te obserwacje jako odstające.

W naszym zbiorze mamy sporo skośnych rozkładów, więc tam skrajne obserwacje wcale nie muszą być odstające, wynikają one raczej ze specyfiki rozkładów. Jedynymi pozostałymi zmiennymi gdzie możnaby zauważyć jakieś obserwacje odstające są zmienne Q75 oraz kurt. Q75 ma bardzo cienki ogon z lewej strony, za to brak go z prawej, dodatkowo jest to rozkład mocno skupiony na krótkim odcinku, stąd nasze podejrzenie. kurt ma z kolei bardzo dziwną "górkę" w histogramie z prawej strony, zupełnie nie pasuje ona do rozkładu. Sprawdźmy czy rozkłady te są w jakiś sposób normalne testem Shapiro-Wilka i czy możemy zastosować regułę 3 sigm.

Jak widać z p-wartości obu testów nie mamy żadnego prawa uznać je za normalne, posłużymy się jednak w pewien sposób nierównością Markowa. Z tego powodu wycentrujemy najpierw te zmienne.

Chcemy sprawdzić czy odstające są obserwacje mniejsze od -0.07 dla Q75 oraz większe od 1 dla kurt. Z nierówności Markowa wiemy, że $$\mathbb{P}(|X|>eps)\leq\frac{\mathbb{E}(X^2)}{eps^2}=\frac{Var(X)}{eps^2}=p_X$$

Zatem tak się szacują prawdopodobieństwa, że wartości bezwzględne wychodzą poza te wartości. Nie są one może rzędu 0.05, należy jednak pamiętać, że jest to zazwyczaj dość grube oszacowanie i sporo zawyża faktyczną wartość prawdobodobieństwa. Na potwierdzenie nasze tezy możemy zobaczyć również boxploty dla obu zmiennych, które potwierdzą nam, że istnieją obserwcje odstające tam gdzie podejrzewaliśmy, a nawet są jeszcze bardziej rygorystyczne względem naszych wartości w przypadku kurt.

Sprawdźmy ile obserwacji łącznie uznaliśmy za odstające.

Mamy zatem zidentyfikowanych 121 obserwacji odstających, co stanowi niecałe 4% zbioru. Jest to jak najbardziej akceptowana liczba outlierów.

W kolejnym zbiorze danych, które chcemy przygotować przygotujemy więcej zmiennych jakościowych poprzez grupowanie niektórych ze zmiennych ilościowych. Przyjrzyjmy się tym zmiennym, które najbardziej nas interesują. Jako bazy użyjemy ramki danych z usuniętymi kolumnami podczas EDA.

Zajmijmy się najpierw zmienną minfun. Możemy ją łatwo podzielić na dwie grupy, gdzie granicą między nimi będzie mniej więcej liczba 0.03.

Podobnie można podzielić zmienną maxdom, tam również występują wyraźnie dwie górki, przy czym jedna z nich słabo rozdziela zmienna, za to druga wydaje się to robić bardzo dobrze. Granicą między nimi jest jedynka.

Przyjrzyjmy się teraz zmiennej mindom, która wykazuje silne tendencje dwumodalne.

Tak jak podejrzewaliśmy, dwie konkretne wartości wybijają się znacznie licznością ponad inne. Naszym pomysłem jest więc skategoryzowanie tej zmiennej na 3 klasy, 2 odpowiadające modom oraz 1 odpowiadającą pozostałym wartościom.

Wówczas proporcje tej zmiennej wynoszą:

Zmienną mode również będziemy chcieli przekształcić na 2 sposoby. Jest to motywowane tym, że wartości tej zmiennej dla kobiet i mężczyzn skupiają się w różnych punktach, jednak nie jest łatwo je rozdzielić na przykład na dwa rozłączne i spójne przedziały.

Zmiennej maxfun nie chcemy jednak skategoryzować, ma ona osobliwy rozkład, mocno skośny, ale nie widać u niej jasnych przesłanek do kategoryzacji. Ostatnią zmienną, którą się zajmiemy będzie kurt, zastosujemy tu podobny schemat jak w przypadku mode.

Pozostałe zmienne będziemy chcieli przeskalować minmaxem do przedziału (0,1)

Alternatywna analiza, miscallenous

1. DBSCAN

2. PCA

3. Lasso

DBSCAN

W poszukiwaniu ciekawych algorytmów wyróżniania obserwacji odstających natrafiliśmy na algorytm DBSCAN. Nie przyjmuje on założeń na temat rozkładu z którego pochodzą zmienne. Wyróżnia on jedynie obserwacje znacznie oddalone od reszty przy założeniu pewnej metryki mierzącej odległość punktów w wielu wymiarach. Algorytm dokonuje klastrowania punktów do siebie zbliżonych i wyróżnia te obserwacje, które nie zostają przyporządkowane do żadnej z klas, które są od pozostałych punktów znacznie oddalone.

Wyszło nam, że 121 z 3168 zmiennych to obserwacje odstające, co stanowi 3% obserwacji. Poniżej podjęta została próba zobrazowania czy otrzymane algorytem obserwacje odstające są w rzeczy samej odstające.

Problematycznym jest fakt, że aż 80% z tych obserwacji to mężczyźni, więc usuwanie ich ze zbioru na tej podstawie może być krzywdzące dla algorytmu klasyfikującego. Przecież zależy nam na jak najlepszym dyskryminowaniu. Może zamiast usuwania tych zmiennych potraktujemy indykator przynależnosci do danej klasy jako nową zmienną.

W rzeczy samej coś jest na rzeczy. Obiekty pokolorowane zielonym odcieniem odstają w niektórych rozkładach dwu wymiarowych od reszty. Będziemy później dalej testowali przyadtność wyniku tego algorytmu.

PCA

Zajmiemy się na tym etapie metodą redukcji wymiarów PCA. Będziemy tworzyli nowy układ odniesienia, to jest nową bazę poprzez rzutowanie punktów na nowopowstałe wektory o kierunkach dających największą wariancję. Baza jest ortogonalna. Dzięki temu będziemy mogli otrzymać o wiele mniej zmiennych, które będą tłumaczyły praktycznie całą zmienność chmury punktów w zbiorze. Wadą tej metody jest jej brak uwzględnienia inofrmacji o zmiennej celu i jej powiązaniu ze zmiennymi dostępnymi w zbiorze.

Zauważmy, że przed poszukiwaniem nowej ortogonalnej bazy wystandaryzujemy zmienne.

Powyżej możemy znaleźć 12 pierwszych składowych głównych. Poniżej widać, że 12 z tych składowych wyjaśnia 98.5% zmienności.

Pierwsze 5 składowych wyjaśnia 85% a pierwsze 7 składowych wyjaśnia 92% zmienności. Z doświadczenia można stwierdzić, że to oznacza, że chmura punktów rozkłada się wielu kierunkach w tych wielu wymiarach, bo potrzeba wileu składowych, żeby wytłumaczyć znaczną część wariancji. Zobaczmy czy kompozycja starych zmiennych z kórej skądają się nowe kierunki daje nam jakąś informację.

Ciężko jest wyróżnić jakąś zależność dla kpierwszych trzech kierunków, bo wkład zmiennych, które je tworzą jest mniej więcej proporcjonalny. Zobaczymy na następnym etapie czy PCA było przydatne w konetekście modelowania i jakości klasyfikacji.

LASSO

Lasso może nam posłużyć do wstępnej selekcji zmiennych. W tej metodzie zmieniamy funkcję kryterialną, którą chcemy optymalizować poprzez dodanie kary w postaci sumy wartości bezwzględnej estymatorów parametrów strukturalnych modelu przemnożonej przez pewien współczynnik - hiperparametr. W naszym przykładzie nakładamy więc ograniczene na sumę wartości bezwzględnych z współczynników stojących przy zmiennych objsasniających w regresji logitowej. Pewne zmienne nam się wyzerują. Tym samym zostanie wykonana selekcja. Tą selekcją będziemy się na tym etapie jeszcze tylko sugerowali.

Z ciekawości lasso wykonamy na każdej z wersji przygotowanych zbiorów

Należy zwrócic uwagę na to jak w różnych zestawieniach różne zmienne się zerują. Nie zawsze zgodnie z naszymi intuicjami wyprowadzanymi na poprzednich etapach.

Ostatecznie dobór zmiennych i decyzja o usunięciu obserwacji potencjalnie odstających powinna być dokładnie rozważona i powinna brac pod uwagę używany w analizie model. Na następnym etapie dokonamy uporządkowania dotychczasowych wyników w kontekście dobranego modelu, pewnie zbadamy też ich wpływ na ostateczny wynik, potencjalnie będzie to bardzo pouczające i informujące.